#include <stdio.h>
#include <stdint.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/eventfd.h>

int main(void)
{
    // int eventfd(unsigned int initval, int flags);
    // 功能：进程通知(write几次，就表示通知几次，read读取到的是通知几次的次数) 信号的话适用的是进程间的通信的哦
    // 传入的第一个参数必须得是 8 字节的哦
    // 返回的是一个文件描述符, 所以操作 efd 的时候用 write/read/close
    int efd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
    if (efd < 0)
    {
        perror("eventfd failed!!!");
        return -1;
    }
    uint64_t value = 1;
    write(efd, &value, sizeof(value));
    write(efd, &value, sizeof(value));
    // write(efd, &value, sizeof(value));

    uint64_t ret = 0;
    read(efd, &ret, sizeof(ret));
    printf("%d\n", ret);

    return 0;
}
